package com.itlong.cloud.enumerate;

import lombok.Getter;

/**
 * <desc>
 * SDK来源类型.
 * </desc>
 *
 * @createDate 2019-11-07
 */
public enum SdkSourceTypeEnum {

    CLOUD_ELEVATOR_RTL("云电梯机器人对云端",1),
    CLOUD_ELEVATOR_CTL("云电梯云端对云端",2),
    CLOUD_ENTRANCE("云门禁",3),
    ROBOT_PASS("机器人无感通行",4),
    CLOUD_TALK("云对讲",5),
    QR_CODE_SDK("二维码sdk",6),
    FACE_SDK("人脸识别APi",7),
    UNKOWNTYPE("未知来源", -1)                //未知设备类型
    ;

    @Getter
    private Integer type;  //类型

    @Getter
    private String description;  //类型描述（名称）


    /**
     * <desc>
     * 构造函数.
     * </desc>
     *
     * @param type        SDK来源类型
     * @param description SDK来源类型描述（名称）
     * @author Qiang.S
     * @createDate 2018-08-14
     */
    SdkSourceTypeEnum(String description, Integer type) {
        this.description = description;
        this.type = type;
    }


    /**
     * <desc>
     * 根据SDK来源类型获取描述（名称）.
     * </desc>
     *
     * @param type SDK来源类型
     * @return SDK来源类型描述（名称）
     * @author Juguang.S
     * @createDate 2019-11-07
     */
    public static String getDescription(int type) {
        SdkSourceTypeEnum[] types = SdkSourceTypeEnum.values();
        for (SdkSourceTypeEnum limitCategory : types) {
            if (limitCategory.getType() == type) {
                return limitCategory.getDescription();
            }
        }
        return "";
    }


    /**
     * <desc>
     * 根据SDK来源类型（名称）获取类型.
     * </desc>
     *
     * @param description SDK来源类型描述（名称）
     * @return SDK来源类型
     * @author Juguang.S
     * @createDate 2019-11-07
     */
    public static Integer getType(String description) {
        SdkSourceTypeEnum[] types = SdkSourceTypeEnum.values();
        for (SdkSourceTypeEnum limitCategory : types) {
            if (limitCategory.getDescription().equalsIgnoreCase(description)) {
                return limitCategory.getType();
            }
        }
        return CLOUD_ELEVATOR_RTL.getType();
    }

    /**
     * <desc>
     *      根据设备类型获取设备类型的枚举
     * </desc>
     * @param equipType 枚举类型
     * @return 枚举描述
     * @author Juguang.S
     * @createDate 2019-11-07
     */
    public static SdkSourceTypeEnum getByEquipType(Integer equipType){
        if (equipType != null) {
            for (SdkSourceTypeEnum value : values()) {
                if (value.getType() == equipType) {
                    return value;
                }
            }
        }
        return UNKOWNTYPE;
    }
}
